﻿using System;
using System.IO;

using Flagwind.Options.Profiles;
using Flagwind.Options.Configuration;

namespace Flagwind.Options.Plugins
{
	internal static class OptionUtility
	{
		public static string GetAssistedFilePath(Flagwind.Plugins.Plugin plugin, string extensionName)
		{
			if(plugin == null || string.IsNullOrWhiteSpace(extensionName))
				return null;

			return Path.Combine(Path.GetDirectoryName(plugin.FilePath), Path.GetFileNameWithoutExtension(plugin.FilePath) + (extensionName[0] == '.' ? extensionName : "." + extensionName));
		}

		public static bool HasConfigurationFile(Flagwind.Plugins.Plugin plugin)
		{
			try
			{
				return File.Exists(GetConfigurationFilePath(plugin));
			}
			catch
			{
				return false;
			}
		}

		public static string GetConfigurationFilePath(Flagwind.Plugins.Plugin plugin)
		{
			return GetAssistedFilePath(plugin, ".option");
		}

		public static Profile GetProfile(Flagwind.Plugins.Plugin plugin)
		{
			if(plugin == null)
				return null;

			return Profile.Load(GetAssistedFilePath(plugin, ".ini"));
		}

		public static OptionConfiguration GetConfiguration(Flagwind.Plugins.Plugin plugin)
		{
			if(plugin == null)
				return null;

			string filePath = GetAssistedFilePath(plugin, ".option");
			return OptionConfigurationManager.Open(filePath);
		}
	}
}